package com.yuanzi.base.auth;

import org.springframework.stereotype.Service;

import com.yuanzi.base.constants.AuthConstants;
import com.yuanzi.base.redis.OuterHashRedisService;
/**
 * 此类用于对权限相关缓存的redis存取操作
 * @author cui
 * @data 2017年7月14日
 *
 */
@Service
public class AuthRoleRedisService {
	
	private static String serviceName = AuthConstants.AUTH_SERVICE_NAME;
	
	/*--------------存储用户当前登录的在该机构下的角色：Hash形式：zuul:login_user_role:userId(key):orgId机构Id包括学校与工作室(field)=>roleId(value)---------------*/		

	/**
	 * 获取用户当前登录的在该机构下的角色，运营管理员的机构为0
	 * @author cui
	 * @param userId
	 * @param orgId
	 * @return
	 */
	public static String getLoginRoleOfUserOnOrg(String userId, String orgId){
		return OuterHashRedisService.hget(serviceName, AuthConstants.REDIS_USER_ROLE+userId, orgId);
	}
	
	/**
	 * 设置用户当前登录的在某机构下的角色，运营管理员的机构为0
	 * @author cui
	 * @param userId
	 * @param orgId
	 * @param role 1：教师  2：学生 3：学校管理员 4:工作室成员  5:工作室管理员  6：运营管理员                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              \                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                学校管理员  4：工作室成员  5：工作室管理员  6：系统管理员  
	 */
	public static void setLoginRoleOfUserOnOrg(Long userId, Long orgId, Long role){
		OuterHashRedisService.hset(serviceName, AuthConstants.REDIS_USER_ROLE+userId.toString(), orgId.toString(), role.toString());
	}
	
	/**
	 * 设置用户当前登录的在某机构下的角色，运营管理员的机构为0
	 * @author cui
	 * @param userId
	 * @param orgId
	 * @param role 1：教师  2：学生 3：学校管理员 4:工作室成员  5:工作室管理员  6：运营管理员                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              \                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                学校管理员  4：工作室成员  5：工作室管理员  6：系统管理员  
	 */
	public static void setLoginRoleOfUserOnOrg(Long userId, Long orgId, String role){
		OuterHashRedisService.hset(serviceName, AuthConstants.REDIS_USER_ROLE+userId.toString(), orgId.toString(), role);
	}
	
	/**
	 * 删除用户角色信息
	 * @author cui
	 * @param userId                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             \                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                学校管理员  4：工作室成员  5：工作室管理员  6：系统管理员  
	 */
	public static void deleteLoginRoleOfUserOnOrg(Long userId){
		OuterHashRedisService.del(serviceName, AuthConstants.REDIS_USER_ROLE+userId.toString());
	}
	
	/**
	 * 删除用户当前登录的在某机构下的角色，运营管理员的机构为0
	 * @author cui
	 * @param userId
	 * @param orgId
	 */
	public static void deleteRoleOfUserOnOrg(Long userId, Long orgId){
		OuterHashRedisService.hdel(serviceName, AuthConstants.REDIS_USER_ROLE+userId.toString(), orgId.toString());
	}
}
